package main

import (
	"fmt"
	"unicode/utf8"
)

// rune 相当于go的char
func main() {
	s := "yes我爱慕课网!" // utf-8 可变长 英文1字节 中文3字节
	fmt.Println(len(s))

	for _, v := range []byte(s) {
		fmt.Printf("%X ", v) // 打印编码 发现汉字是utf-8形式，占3个字节
	}
	fmt.Println()
	fmt.Println("Rune count:", utf8.RuneCountInString(s)) // 中文英文都按1个字符统计长度

	bytes := []byte(s)
	fmt.Println(bytes)
	for len(bytes) > 0 {
		ch, size := utf8.DecodeRune(bytes)
		bytes = bytes[size:]
		fmt.Printf("%c ", ch)
	}
	fmt.Println()

	for i, ch := range []rune(s) {
		fmt.Printf("(%d %c)", i, ch)
	}
	fmt.Println()
}
